package tests;

import junit.framework.TestCase;
import model.Bolita;
import model.Bolon;
import model.Camino;
import model.Escenario;
import model.Item;
import model.Pacman;

/**
 * Prueba que el pacman pueda comer una bolita o un bolon. 
 * Si el pacman come un bolon, se prueba que el pacman pase de estado defensivo a agresivo.
 * Se verifica que el pacman pueda morirse estando en estado defensivo y que esto no suceda
 * cuando se encuentre en estado agresivo.
 * 
 * @author Juan Marchese (juan.marchese@fdvsolutions.com)
 *         Date: 21/06/12
 *         Time: 15:43
 */
public class PacmanTest extends TestCase {
	
	Escenario escenario;
	
	protected void setUp() {
		this.escenario = new Escenario();
	}
	
	/**
	 * Prueba Pacman come bolita
	 */
	public void testPacmanComeBolita(){
		Item bolita = new Bolita();
		Pacman pacman = new Pacman(new Camino(1,1));
		assertEquals("testPacmanComeBolita", true,pacman.comer(bolita));
	}
	
	/**
	 * Prueba Pacman come bolon
	 */
	public void testPacmanComeBolon(){
		Item bolon = new Bolon();
		Pacman pacman = new Pacman(new Camino(1,1));
		assertEquals("testPacmanComeBolon", true,pacman.comer(bolon));
	}
	
	/**
	 * Prueba Pacman muerte cuando esta en estado defensivo.
	 */
	public void testMuertePacmanDefensivo(){
		Item bolon = new Bolon();
		Pacman pacman = new Pacman(new Camino(1,1));
		assertEquals("testMuertePacmanDefensivo", true,pacman.morir());
	}
	
	/**
	 * Prueba Pacman muerte cuando esta en estado agresivo.
	 */
	public void testMuertePacmanAgresivo(){
		Item bolon = new Bolon();
		Pacman pacman = new Pacman(new Camino(1,1));
		pacman.comer(bolon);
		assertEquals("testMuertePacmanAgresivo", false,pacman.morir());
	}
	
	/**
	 * Prueba Pacman se convierte en agresivo cuando come un bolon estando en estado defensivo.
	 */
	public void testConvertirPacmanDefensivoEnAgresivo(){
		Item bolon = new Bolon();
		Pacman pacman = new Pacman(new Camino(1,1));
		pacman.comer(bolon);
		assertEquals("testConvertirPacmanDefensivoEnAgresivo", true,pacman.estaAgresivo());
	}
}
